package com.aaa.service.impl;

import com.aaa.dao.MenuDao;
import com.aaa.entity.Menu;
import com.aaa.service.MenuService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 菜单权限表(Menu)表服务实现类
 *
 * @author
 * @since 2022-06-27 11:26:10
 */
@Service("menuService")
public class MenuServiceImpl implements MenuService {
    @Resource
    private MenuDao menuDao;

    @Override
    public Map<String, List<Menu>> findMenuByUsername(String username) {
        List<Menu> menuList = menuDao.findMenuByUsername(username);
        //获取所有的一级菜单
        List<Menu> menuListlevel1=new ArrayList<>();
        //获取所有的二级菜单
        List<Menu> menuListlevel2=new ArrayList<>();
        for (Menu menu : menuList) {
            if(menu.getMenuType().equals("M")){
                menuListlevel1.add(menu);
            }
            if(menu.getMenuType().equals("C")){
                menuListlevel2.add(menu);
            }
        }
        Map<String, List<Menu>> map= new HashMap();
        map.put("menuListlevel1",menuListlevel1);
        map.put("menuListlevel2",menuListlevel2);
        return map;
    }
    /**
     * @author     ：dudu
     * @Description: 通过ID查询单条数据
    */
    @Override
    public Menu queryById(Integer menuId) {
        return this.menuDao.queryById(menuId);
    }

   /**
    * @author     ：dudu
    * @Description: 根据id删除菜单 但是数据库中不删除该菜单
   */
    @Override
    public int deleteMenuById(Integer menuId) {
        return menuDao.deleteMenuById(menuId);
    }

    @Override
    public List<Menu> findAllMenu() {
        return menuDao.findAllMenu();
    }

    @Override
    public Menu addMenu(Menu menu) {
        this.menuDao.addMenu(menu);
        final List<Integer> roles = menuDao.selectAllRole();
        for (Integer role : roles) {
            menuDao.insertRoleMenu(role, menu.getMenuId());
        }
        return menu;
    }
    /**
     * @author     ：dudu
     * @Description: 从数据库中删除
    */
    @Override
    public boolean deleteMenu(Integer menuId) {
        menuDao.deleteRoleMenu(menuId);
        return this.menuDao.deleteMenu(menuId) > 0;
    }

    @Override
    public Menu updateMenu(Menu menu) {
        menuDao.updateMenu(menu);

        menuDao.deleteRoleMenu(menu.getMenuId());
        final List<Integer> roles = menuDao.selectAllRole();
        for (Integer role : roles) {
            menuDao.insertRoleMenu(role, menu.getMenuId());
        }
        return this.queryById(menu.getMenuId());
    }

    @Override
    public Menu findParentNameId(Integer menuId) {
        Menu parent = menuDao.findParentNameId(menuId);
        if (parent != null) {
            return parent;
        } else {
            Menu menu = new Menu();
            menu.setMenuName("没有上级目录");
            return menu;
        }
    }



}
